package Lab2;

import java.util.ArrayList;
import java.util.EmptyStackException;
import java.util.Vector;
import java.util.List;

public class Stack <E> {
	private List<E> lisStack;
	
	public Stack() {
		lisStack = new ArrayList<E>();
	}
	
	public E push(E item) {
		lisStack.add(item);
		return item;
	}
	
	public E pop() {
		
		if (lisStack.size() == 0) {
			throw new EmptyStackException();
		}

		E item = lisStack.get(lisStack.size() - 1);
		
		lisStack.remove(lisStack.size() - 1);
		
		return item;
	}
	
	public E peek() throws EmptyStackException {
		
		if (lisStack.size() == 0) {
			throw new EmptyStackException();
		}
		
		E item = lisStack.get(lisStack.size() - 1);
		
		return item;
	}
	
	public Boolean empty() {
		if (lisStack.size() == 0) {
			return true;
		}
		
		return false;
	}
	
	public int search(E item) throws EmptyStackException {
		if (lisStack.size() == 0) {
			throw new EmptyStackException();
		}
		
		int indexPosition = 0;
		
		for(int index = 0; index < lisStack.size(); index++) {
			if (lisStack.get(index).equals(item)) {
				return lisStack.size() - indexPosition;
			}
			indexPosition++;
		}
		return -1;
	}
	
	public int size() {
		return lisStack.size();
	}
}
